<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
  <script>
    const PENDING = "pending";
    const RESOLVED = "resolved";
    const REJECTED = "rejected";

    function Mypromise(fn) {
      var self = this;
      this.state = PENDING;
      this.value = null;
      this.resolvedCallBacks = [];
      this.rejectdCallBacks = [];
      function resolve(value) {
        if (value instanceof Mypromise) {
          return value.then(resolve, reject);
        }
        setTimeout(() => {
          if (self.state === PENDING) {
            self.state = RESOLVED;
          }
        });
      }
    }

    let demo = new Promise((res) => {
      console.log(res);
    });
  </script>
</html>
